<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>D&amp;D一応動くようにできました | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">1908</span>
    <a class="thread-title" href="1908.html#1908">D&amp;D一応動くようにできました</a></div>
    <ul><li><div class="list-title">
    <span class="no">1911</span>
    <a class="thread-title" href="1908.html#1911">RE: D&amp;D一応動くようにできました</a></div>
    <ul><li><div class="list-title">
    <span class="no">1916</span>
    <a class="thread-title" href="1908.html#1916">Re2: D&amp;D一応動くようにできました</a></div>
    <ul><li><div class="list-title">
    <span class="no">1917</span>
    <a class="thread-title" href="1908.html#1917">Re3: D&amp;D一応動くようにできました</a></div>
    </li><li><div class="list-title">
    <span class="no">1921</span>
    <a class="thread-title" href="1908.html#1921">Re3: D&amp;D一応動くようにできました</a></div>
    <ul><li><div class="list-title">
    <span class="no">1927</span>
    <a class="thread-title" href="1908.html#1927">ゴミが付くのは終端忘れ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1928</span>
    <a class="thread-title" href="1908.html#1928">RE: ゴミが付くのは終端忘れ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1930</span>
    <a class="thread-title" href="1908.html#1930">RE2: ゴミが付くのは終端忘れ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1932</span>
    <a class="thread-title" href="1908.html#1932">RE3: ゴミが付くのは終端忘れ</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">1913</span>
    <a class="thread-title" href="1908.html#1913">RE: D&amp;D一応動くようにできました</a></div>
    </li><li><div class="list-title">
    <span class="no">1919</span>
    <a class="thread-title" href="1908.html#1919">編集ファイルD&amp;D修正版</a></div>
    <ul><li><div class="list-title">
    <span class="no">1925</span>
    <a class="thread-title" href="1908.html#1925">RE: 編集ファイルD&amp;D修正版</a></div>
    <ul><li><div class="list-title">
    <span class="no">1934</span>
    <a class="thread-title" href="1908.html#1934">Re2: 編集ファイルD&amp;D修正版</a></div>
    <ul><li><div class="list-title">
    <span class="no">1935</span>
    <a class="thread-title" href="1908.html#1935">ちょっと欲が</a></div>
    <ul><li><div class="list-title">
    <span class="no">1938</span>
    <a class="thread-title" href="1908.html#1938">Re:ちょっと欲が</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">1941</span>
    <a class="thread-title" href="1908.html#1941">Re3: 編集ファイルD&amp;D修正版</a></div>
    </li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=1908>
    <span class="no">[1908]</span>
    <a class="thread-title" href="#1908">D&amp;D一応動くようにできました</a>
    <span class="author">おに</span>
    <time datetime="2002-04-18T03:56:20">2002年04月18日 03:56</time></h1>
    <div class="body">システムメニューアイコンからの編集中ファイルのDrag&amp;Dropです。<br>eGroupの使用もこういう形での開発も初めてですので、<br>下記の場所で良かったのか不安ですが、とりあえずこれです。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/DragDropFrom2002-04-12.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>DragDrop<wbr>From2002<wbr>-<wbr>04-<wbr>12.<wbr>lzh</nobr></a><br><br>「//by 鬼」とついている箇所が僕がいじった部分です。<br>変更元はssrc_2002-04-12.zipです。<br><br>問題点として、時々アイコンのダブルクリックによるがクローズが<br>なかなか動作しない(しつこく繰り返していると動作する)ことがあります。<br>メニューを表示してからダブルクリックの判定を後で行うようにしていますが、<br>タイマーなどを使って、ダブルクリックとして有効な時間が過ぎてから<br>システムメニューを表示するようにした方がいいかも知れません。</div></section>
    <ul><li><section><h1 id=1911>
    <span class="no">[1911]</span>
    <a class="thread-title" href="#1911">RE: D&amp;D一応動くようにできました</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-18T21:41:32">2002年04月18日 21:41</time></h1>
    <div class="body"><br>いただきました。<br>ファイルを開いていないときはドラッグ＆ドロップできないんですね。あたりまえか。。。<br>マウスカーソルが禁止マークになるといいかなぁと思ったりもしましたが、みなさまいかがでしょう？<br><br><br>たしかにダブルクリックすると、メニューが出てすぐ消えることがあるみたいですね。<br><br>それから、VC++のエディタ部分にドロップするとファイル名が表示されるのですが、<br>ファイル名の後ろにゴミが出るみたいです。<br><br>この2つ、直るとうれしいなぁ。<br>とりあえず混ぜてみますので、反応よろしく &gt; all<br></div></section>
    <ul><li><section><h1 id=1916>
    <span class="no">[1916]</span>
    <a class="thread-title" href="#1916">Re2: D&amp;D一応動くようにできました</a>
    <span class="author">おに</span>
    <time datetime="2002-04-18T23:51:51">2002年04月18日 23:51</time></h1>
    <div class="body">最初考えもしなかった問題が続々と…。^_^<br><br>&gt; ファイルを開いていないときはドラッグ＆ドロップできないんですね。あたりまえか。。。<br>&gt; マウスカーソルが禁止マークになるといいかなぁと思ったりもしましたが、みなさまいかがでしょう？<br>左上アイコンの本来の意味はシステムメニューを表示するためのもので、システムメニューが禁止されているわけではないので、どうでしょうか？<br>僕は不要と判断しましたが、禁止マークにしないと判りにくいという人が多数派であればそうするべきかも知れませんね。<br><br>&gt; たしかにダブルクリックすると、メニューが出てすぐ消えることがあるみたいですね。<br>エクスプローラはダブルクリック時間が過ぎてダブルクリックでは無いことが確定してからメニューを出しています。<br>そういう風に直すのが正解でしょうね…。<br>タイマー作るのをさぼったのがいけませんでした。<br><br>&gt; それから、VC++のエディタ部分にドロップするとファイル名が表示されるのですが、<br>&gt; ファイル名の後ろにゴミが出るみたいです。<br>ファイル「名」にも意味はある、として、テキストとしても記憶させています。<br>で、ワードパッドとメッセンジャーでは再現しませんでした。<br>僕はVC++を持っていないので、確認できません。<br>この点のデバッグは、すみませんが、誰かお願いできませんか？<br><br>後、アップしてからはっと気付いたのですが、ファイル名とパスを区切る処理でDBCS処理を忘れてました。<br>ファイル名中に2バイト目に'\'が来る漢字があると誤動作するはずです。</div></section>
    <ul><li><section><h1 id=1917>
    <span class="no">[1917]</span>
    <a class="thread-title" href="#1917">Re3: D&amp;D一応動くようにできました</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-19T00:12:18">2002年04月19日 00:12</time></h1>
    <div class="body"><br>&gt;最初考えもしなかった問題が続々と…。^_^<br><br>乗りかかった船と思ってください(^-^;<br><br><br>最大化してシステムメニューをクリックすると、あらぬところからメニューが出ました。<br><br>VC++へのドロップの件は、私には手が出せ無そうなのですが、ゴミがあるときと無いときがあって不思議。<br>無いときはずっと無いんだよなぁ。不思議。<br></div></section>
    </li><li><section><h1 id=1921>
    <span class="no">[1921]</span>
    <a class="thread-title" href="#1921">Re3: D&amp;D一応動くようにできました</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-19T17:09:51">2002年04月19日 17:09</time></h1>
    <div class="body">&gt;&gt; ファイル名の後ろにゴミが出るみたいです。<br>&gt;で、ワードパッドとメッセンジャーでは再現しませんでした。<br>CEditWnd.cpp (3633)行目:<br>CopyMemory(P, m_cEditDoc.m_szFilePath, Len);<br>というのは，最後の'\0'をコピーし忘れていませんか？<br></div></section>
    <ul><li><section><h1 id=1927>
    <span class="no">[1927]</span>
    <a class="thread-title" href="#1927">ゴミが付くのは終端忘れ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-19T22:41:47">2002年04月19日 22:41</time></h1>
    <div class="body">&gt;CEditWnd.cpp (3633)行目:<br>&gt;CopyMemory(P, m_cEditDoc.m_szFilePath, Len);<br>&gt;というのは，最後の'\0'をコピーし忘れていませんか？<br>CF_TEXT Text format の説明MSDNでを見たら Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. Use this format for ANSI text. <br><br>となっているので最後の'\0'が必要みたいです．<br><br>ここと，少し前の<br>M.hGlobal = GlobalAlloc(GMEM_MOVEABLE, Len);<br>をLen → Len + 1 にしたらゴミが出なくなりました．<br></div></section>
    <ul><li><section><h1 id=1928>
    <span class="no">[1928]</span>
    <a class="thread-title" href="#1928">RE: ゴミが付くのは終端忘れ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-19T23:08:55">2002年04月19日 23:08</time></h1>
    <div class="body"><br>&gt;ここと，少し前の<br>&gt;M.hGlobal = GlobalAlloc(GMEM_MOVEABLE, Len);<br>&gt;をLen → Len + 1 にしたらゴミが出なくなりました．<br><br>CopyMemoryのほうも？<br></div></section>
    <ul><li><section><h1 id=1930>
    <span class="no">[1930]</span>
    <a class="thread-title" href="#1930">RE2: ゴミが付くのは終端忘れ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-19T23:26:04">2002年04月19日 23:26</time></h1>
    <div class="body">&gt;&gt;M.hGlobal = GlobalAlloc(GMEM_MOVEABLE, Len);<br>&gt;&gt;をLen → Len + 1 にしたらゴミが出なくなりました．<br>&gt;<br>&gt;CopyMemoryのほうも？<br>はい，そうです．<br></div></section>
    <ul><li><section><h1 id=1932>
    <span class="no">[1932]</span>
    <a class="thread-title" href="#1932">RE3: ゴミが付くのは終端忘れ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-19T23:34:02">2002年04月19日 23:34</time></h1>
    <div class="body"><br>つけました。ありがとう。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li><section><h1 id=1913>
    <span class="no">[1913]</span>
    <a class="thread-title" href="#1913">RE: D&amp;D一応動くようにできました</a>
    <span class="author">みく</span>
    <time datetime="2002-04-18T22:05:17">2002年04月18日 22:05</time></h1>
    <div class="body"><br>試してみました。<br><br>&gt;問題点として、時々アイコンのダブルクリックによるがクローズが<br>&gt;なかなか動作しない(しつこく繰り返していると動作する)ことがあります。<br><br>なかなか閉じないです。違和感ありです。<br></div></section>
    </li><li><section><h1 id=1919>
    <span class="no">[1919]</span>
    <a class="thread-title" href="#1919">編集ファイルD&amp;D修正版</a>
    <span class="author">おに</span>
    <time datetime="2002-04-19T02:53:52">2002年04月19日 02:53</time></h1>
    <div class="body">いくつか修正しました。<br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/DragDropFrom2002-04-12ver2.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>DragDrop<wbr>From2002<wbr>-<wbr>04-<wbr>12ver2.<wbr>lzh</nobr></a><br><br>タイマーを使ってエクスプローラの動作に似せてみました。<br>状態を 1)ボタン押下 2)クリック 3)ダブルクリック で管理し、ドラッグが開始できるのは1)、システムメニューは2)かつ一定時間経過、クローズは3)という具合です。<br>(前回mymessage.hに追加していたメッセージは使わなくなりました)<br>動作の確実性は増しましたが、シングルクリックした時はメニューが出るまでじれったいです。(仕方ないかな)<br><br>&gt;最大化してシステムメニューをクリックすると、あらぬところからメニューが出ました。<br>ポップアップメニューが負の座標に対応してない様子なのでX座標が負なら0を採用するようにしました。<br><br>DBCS対応忘れも直してます。^^;<br>VC++は…どうしましょう？<br><br>あと、編集して保存していない時はどうするか、ですけど…<br>　案1) ユーザーが気を付けて手動で上書保存(つまり何もしない)<br>　案2) 保存されていないとドラッグが開始できなくする<br>　案3) 「ドラッグ開始時自動保存」のオプションを追加(OFF時は何もしない)</div></section>
    <ul><li><section><h1 id=1925>
    <span class="no">[1925]</span>
    <a class="thread-title" href="#1925">RE: 編集ファイルD&amp;D修正版</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-19T22:23:50">2002年04月19日 22:23</time></h1>
    <div class="body"><br>いやー。動いたでござるよ。ポップアップが出てくるまで時間がかかるのは、IEも同じくらい時間がかかるからいいんじゃないかと思います。<br>VC++はなぜか問題なく。<br><br>&gt;あと、編集して保存していない時はどうするか、ですけど…<br>&gt;　案1) ユーザーが気を付けて手動で上書保存(つまり何もしない)<br><br>何もしない。何もしないほうが融通が利くこともある。かもしれない。<br><br>あと、SetTimerしたときに、KillTimerしなくてもいいの？<br></div></section>
    <ul><li><section><h1 id=1934>
    <span class="no">[1934]</span>
    <a class="thread-title" href="#1934">Re2: 編集ファイルD&amp;D修正版</a>
    <span class="author">おに</span>
    <time datetime="2002-04-20T00:17:34">2002年04月20日 00:17</time></h1>
    <div class="body">他の環境でも動いたみたいでよかったです。<br>VC++も解決したようですね。ヌル文字が必要でしたか…。覚えておきます。<br><br>&gt; 何もしない。何もしないほうが融通が利くこともある。かもしれない。<br>では、全ての問題が解決したということで、乗りかかった船おしまい(^^<br><br>…と思ったけれど、後で気付いたのが一点あります。<br>よく見てみるとシステムメニューのX座標が微妙に他と比べ左(窓の左端ぴったり)なので、GetSystemMetrics(SM_CXFRAME)をメニュー表示箇所のR.leftに足して下さい。<br>「(R.left &gt; 0)? R.left : 0,」を<br>「(R.left + GetSystemMetrics(SM_CXFRAME) &gt; 0)? R.left + GetSystemMetrics(SM_CXFRAME) : 0」に訂正。<br><br>&gt; あと、SetTimerしたときに、KillTimerしなくてもいいの？<br>SysMenuTimer関数中でKillTimerで自殺(?)してませんか？</div></section>
    <ul><li><section><h1 id=1935>
    <span class="no">[1935]</span>
    <a class="thread-title" href="#1935">ちょっと欲が</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-20T02:57:05">2002年04月20日 02:57</time></h1>
    <div class="body">エクスプローラだと右クリックでのドラッグだとドロップ時にメニューができますが、あれは難しいんでしょうか。<br><br>あと、普通はシステムメニューが出た後にもう一回アイコンをクリックするとメニューが閉じるけど、これは閉じないので何となく違和感があります。<br></div></section>
    <ul><li><section><h1 id=1938>
    <span class="no">[1938]</span>
    <a class="thread-title" href="#1938">Re:ちょっと欲が</a>
    <span class="author">おに</span>
    <time datetime="2002-04-20T13:57:26">2002年04月20日 13:57</time></h1>
    <div class="body">&gt; エクスプローラだと右クリックでのドラッグだとドロップ時にメニューができますが、あれは難しいんでしょうか。<br>あれは受け手(エクスプローラ)がやっている処理なので、右ボタンの処理を追加すればいいと思います。<br>現在WM_LBUTTONXX, WM_NCLBUTTONXXでやっている処理をWM_RBUTTONXX, WM_NCRBUTTONXXにも書いて、WM_MOUSEMOVEによるドラッグ開始処理中でどちらのボタンか認識してCDropSourceのコンストラクタに渡す値を変えれば多分。<br> <br>&gt; あと、普通はシステムメニューが出た後にもう一回アイコンをクリックするとメニューが閉じるけど、これは閉じないので何となく違和感があります。<br>気付きませんでした。正確には一回閉じてまた出るというか。<br>…でも、エクスプローラも閉じませんね。<br><br>無理やり対処するなら、<br><br>終わったことを示すicEndを追加して<br>enum {icNone, icDown, icClicked, icDoubleClicked, icEnd} m_IconClicked;<br><br>その時は一連の処理を開始しないことにして<br>LRESULT CEditWnd::OnNcLButtonDown(WPARAM wp, LPARAM lp)<br>{<br>　LRESULT Result;<br><br>　if(m_IconClicked == icEnd)<br>　{<br>　　m_IconClicked = icNone;<br>　　Result = 0;<br>　}<br>　else if(wp == HTSYSMENU)<br>　　…<br><br>メニューがシステムメニュークリックで閉じられていたらicEndに<br>void CEditWnd::OnSysMenuTimer()<br>{<br>　if(m_IconClicked == icClicked)<br>　{<br>　　ReleaseCapture();<br><br>　　//システムメニュー表示<br>　　HMENU SysMenu = GetSystemMenu(m_hWnd, FALSE);<br>　　RECT R;<br>　　GetWindowRect(m_hWnd, &amp;R);<br>　　DWORD Cmd = TrackPopupMenu(SysMenu, TPM_RETURNCMD | TPM_LEFTBUTTON |<br>　　　　　　TPM_LEFTALIGN | TPM_TOPALIGN,<br>　　　　　　(R.left + GetSystemMetrics(SM_CXFRAME) &gt; 0)? R.left + GetSystemMetrics(SM_CXFRAME): 0,<br>　　　　　　R.top + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME),<br>　　　　　　0, m_hWnd, NULL);<br>　　if(Cmd != 0)<br>　　　SendMessage(m_hWnd, WM_SYSCOMMAND, Cmd, 0);<br><br>　　POINT P;<br>　　GetCursorPos(&amp;P);<br>　　if((SendMessage(m_hWnd, WM_NCHITTEST, 0, P.x | (P.y &lt;&lt; 16)) == HTSYSMENU) &amp;&amp;<br>　　　　　　(GetKeyState(VK_LBUTTON) &amp;&amp; 0x80 != 0))<br>　　　m_IconClicked = icEnd;<br>　　else<br>　　　m_IconClicked = icEnd;<br>　}<br>　else<br>　　m_IconClicked = icNone;<br>}<br><br>…この修正で一応…<br>ですが、GetKeyStateを用いたクリック判定は、最初にダブルクリック判定に用いてたまに効かなくなったやつでもありますので、不安です。<br>エクスプローラが対処をしていないのは、単に手抜きか、何か問題があるからなのか…。</div></section>
    </li></ul></li><li><section><h1 id=1941>
    <span class="no">[1941]</span>
    <a class="thread-title" href="#1941">Re3: 編集ファイルD&amp;D修正版</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-20T21:43:47">2002年04月20日 21:43</time></h1>
    <div class="body"><br>&gt;「(R.left &gt; 0)? R.left : 0,」を<br>&gt;「(R.left + GetSystemMetrics(SM_CXFRAME) &gt; 0)? R.left + GetSystemMetrics(SM_CXFRAME) : 0」に訂正。<br><br>つけときます。ありがとう。<br><br>&gt;&gt; あと、SetTimerしたときに、KillTimerしなくてもいいの？<br>&gt;SysMenuTimer関数中でKillTimerで自殺(?)してませんか？<br><br>あー。なるほど。そういうことでしたか。<br>1357を明示してKillTimerしてなかったので、あれ？と思ったのでした。失礼しました。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></body></html>